package snafu.framework.agents;

import snafu.framework.actions.AbstractAction;
import snafu.framework.objects.WorldObject;
import snafu.framework.worlds.WorldMap;

public interface Agent extends WorldObject {

	/**
	 * Returns the action the agents wants to perform on the next step.
	 * 
	 * @param perception
	 *            the created perception for this agent
	 * @return the action the agents wants to perform
	 */
	public AbstractAction act(WorldMap perception);
	
	/**
	 * Returns the class of the brain attached to this agent.
	 * 
	 * @return the agent's brain class
	 */
	public Class<? extends AgentBrain> getBrain();
	
	
	public boolean canPercept(WorldObject object);
	
}
